package com.cloudprovidepayment.base;

import java.util.List;

public interface BaseDao {

	/**
	 * 查询列表
	 * 
	 * @param namespaceId
	 *            XML配置文件节点ID
	 * @return List
	 * @throws Exception
	 */
	public <E> List<E> query(String namespaceId) throws Exception;

	/**
	 * 查询列表
	 * 
	 * @param namespaceId
	 *            XML配置文件节点ID
	 * @param parameters
	 *            参数
	 * @return List
	 * @throws Exception
	 */
	public <E> List<E> query(String namespaceId, Object parameters) throws Exception;

	/**
	 * 查询对象
	 * 
	 * @param namespaceId
	 *            XML配置文件节点ID
	 * @param parameters
	 *            参数
	 * @return 对象
	 * @throws Exception
	 */
	public <T> T queryObject(String namespaceId, Object parameters) throws Exception;

	/**
	 * 新增一条记录
	 * 
	 * @param namespaceId
	 *            XML配置文件节点ID
	 * @param parameters
	 *            参数
	 * @return 对象
	 * @throws Exception
	 */
	public Object insert(String namespaceId, Object parameters) throws Exception;

	/**
	 * 批量新增
	 * 
	 * @param namespaceId
	 *            XML配置文件节点ID
	 * @param parameters
	 *            条件参数列表
	 * @throws Exception
	 */
	public <T> void batchInsert(String namespaceId, List<T> parameters) throws Exception;

	/**
	 * 批量更新
	 * 
	 * @param namespaceId
	 *            XML配置文件节点ID
	 * @param parameters
	 *            条件参数列表
	 * @throws Exception
	 */
	public <T> void batchUpdate(String namespaceId, List<T> parameters) throws Exception;

	/**
	 * 更新
	 * 
	 * @param namespaceId
	 *            XML配置文件节点ID
	 * @param parameters
	 *            条件参数
	 * @return
	 * @throws Exception
	 */
	public int update(String namespaceId, Object parameters) throws Exception;

	/**
	 * 删除功能
	 * 
	 * @param namespaceId
	 *            XML配置文件节点ID
	 * @param parameters
	 *            参数
	 * @return
	 * @throws Exception
	 */
	public int delete(String namespaceId, Object parameters) throws Exception;

	/**
	 * 统计总数，一般用于分页
	 * 
	 * @param namespaceId
	 *            XML配置文件节点ID
	 * @return
	 * @throws Exception
	 */
	public Integer count(String namespaceId) throws Exception;

	/**
	 * 统计总数，一般用于分页
	 * 
	 * @param namespaceId
	 *            XML配置文件节点ID
	 * @param parameters
	 *            参数
	 * @return
	 * @throws Exception
	 */
	public Integer count(String namespaceId, Object parameters) throws Exception;

	/**
	 * 查询
	 * 
	 * @param namespaceId
	 *            XML配置文件节点ID
	 * @return 对象
	 * @throws Exception
	 */
	public Object queryObject(String namespaceId) throws Exception;
	
}
